home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / program / gnudev1.zip / emx / include / fix-args.h < prev    next >
C/C++ Source or Header  |  1996-02-25  |  2KB  |  42 lines

  1. /*----------------------------------------------------------------------*
  2.  * Bounds Checking for GCC.                        *
  3.  * Copyright (C) 1995 Richard W.M. Jones <rwmj@doc.ic.ac.uk>.        *
  4.  *----------------------------------------------------------------------*
  5.  * This program is free software; you can redistribute it and/or modify    *
  6.  * it under the terms of the GNU General Public License as published by    *
  7.  * the Free Software Foundation; either version 2 of the License, or    *
  8.  * (at your option) any later version.                    *
  9.  *                                    *
  10.  * This program is distributed in the hope that it will be useful,    *
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of    *
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    *
  13.  * GNU General Public License for more details.                *
  14.  *                                    *
  15.  * You should have received a copy of the GNU General Public License    *
  16.  * along with this program; if not, write to the Free Software        *
  17.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.        *
  18.  *----------------------------------------------------------------------*
  19.  * Modified for emx by Eberhard Mattes, Feb 1996
  20.  *----------------------------------------------------------------------*/
  21.  
  22. #ifndef _FIX_ARGS_H_
  23. #define _FIX_ARGS_H_
  24.  
  25. #ifdef __BOUNDS_CHECKING_ON
  26.  
  27. #define __old_va_arg(ap,t) (ap += _VA_ROUND (t), *(t *)(ap - _VA_ROUND (t)))
  28.  
  29. #undef va_arg
  30.  
  31. #define va_arg(AP,TYPE) \
  32.   ({extern int __bounds_debug_no_checking; \
  33.   int __t = __bounds_debug_no_checking; \
  34.   TYPE __r; \
  35.   __bounds_debug_no_checking = 1; \
  36.   __r = __old_va_arg(AP,TYPE); \
  37.   __bounds_debug_no_checking = __t; \
  38.   __r;})
  39.  
  40. #endif /* __BOUNDS_CHECKING_ON */
  41. #endif /* _FIX_ARGS_H_ */
  42.